package upload.controller;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import upload.domain.UploadFile;

@Controller
@RequestMapping("/upload")
public class UploadController {
	
	@RequestMapping("imageUp.do") 
	public String imageUp(String desc, @RequestParam("picture")MultipartFile picture, ModelMap map) throws IllegalStateException, IOException {
		//DB- desc, 사진 경로
		String saveDir = "C:\\day\\apache-tomcat-6.0.41\\webapps\\spring_mvc_02_fileupload\\upload_picture";
		//picture가 null - 요청파라미터 picture가 없는 경우
		if(picture!=null && !picture.isEmpty()) {//업로드된 파일이 있다.
			//업로드된 파일 정보 조회
			String fileName = picture.getOriginalFilename();
			long fileSize = picture.getSize();//byte
			//파일 영구저장소(경로)로 이동
			picture.transferTo(new File(saveDir, fileName));
			map.addAttribute("fileName", fileName);
			map.addAttribute("fileSize", fileSize);
			map.addAttribute("desc",desc);
		}else {//업로드된 파일이 없는 경우.
			
		}
		return "/single_up/image_view.jsp";
	}
	
	//UploadFile class - instance변수 : String desc, MultipartFile picture / setter / getter 
	//public String imageUp(UploadFile file)
	
	//여러 파일 업로드 처리 컨트롤러 메소드
	@RequestMapping("multifileUp.do")
	public String multifileUp(UploadFile uploadFile) throws Exception {
		
		//이동경로
		String saveDir = "c:\\day\\upfile";
		
		String comment = uploadFile.getComment();
		List<MultipartFile> upfile = uploadFile.getUpfile();
		if(upfile!=null) {//요청파라미터 Name upfile이 있고
			
			for(MultipartFile file : upfile) {
				if(!file.isEmpty()){
					String fileName = file.getOriginalFilename();
					long size = file.getSize();
					System.out.println("파일 정보 저장 : " + fileName+", " +size);
					file.transferTo(new File(saveDir, fileName));
				}
			}
		} else {
			//업로드 안된 상황 - 처리
		}
		System.out.println("comment : " + comment);
		return "/multi_up/file_download.jsp";
	}
	
	//Download 처리 controller 메소드
	@RequestMapping("download.do")
	public String download(String fileName, ModelMap map) {
		map.addAttribute("fileName", fileName);//다운로드 시킬 파일 명을 전달 
		return "downloadView";
		
	}

}
